“Bulk e-mail” refers to large numbers of e-mail messages sent by a single sender to a large number of recipients. Bulk e-mail may either be e-mails that are requested by the recipient, such as a message from an e-commerce website including advertisements, or can be unsolicited bulk e-mail (UBE), more commonly known as “Spam.” UBE and requested bulk e-mail can overwhelm a recipient e-mail system due to the resulting high volume of traffic. Additionally, UBE may include messages that contain computer viruses, scams, or other unwanted and undesirable content.
Several techniques may be implemented to reduce the amount of UBE received by an e-mail user. A recipient system may use a filtering program to remove e-mail messages that contain certain keywords. Alternatively, a recipient system may use rate limiting techniques. These techniques typically involve applying a limit to the amount of e-mail a specific sender may send per unit of time. The recipient system may use several different measures of e-mail traffic to limit volume from a sender. For example, a rate limiting system may specify that a specific sender may only send 500 messages per hour to the recipient. If the sender sends more than 500 messages in one hour, the excess messages will be rejected. Alternatively, a recipient may use connection limits that limit a number of connections made within a certain amount of time. These rate limiting techniques are effective in reducing excessive e-mail traffic from known and unknown abusive e-mail senders.
When only one e-mail server is receiving the incoming e-mail messages that are subject to rate limiting, the individual server can maintain a database of access information from a variety of different e-mail senders. When a sender tries to connect with the server, the server can reference the database to determine whether the proposed connection would exceed the rate limits. However, rate limiting may also be used over a large network including a number of participants. All of the participants on the network would then be subject to the same rate limit network-wide. For example, there may be a rate limit of 100 connections per hour from a specific sender. When the sender connects with any of the participants, those connections count toward the limit. If one sender initiated 50 connections with a first participant, and 50 connections with a second participant within one hour, the sender would then be unable to connect with any of the participants for the remainder of the hour.
When several remote participants are subject to the same rate limits, each individual participant must know the access data for all of the other participants when a sender attempts to make a connection. Each participant on the network must therefore update the other participants when an event that affects the rate limiting occurs, for example when a server accepts an e-mail connection, the server sends the details of the connection to all of the other participants. Sending and receiving updates about e-mail traffic and connection information over a large network can be resource intensive and may cause delays while waiting for updates from certain participants.
A distributed shared memory (DSM) is a memory that may be used by several participants over a network. The DSM allows any of the participants on the network to write to any part of the memory at any time. While a participant is writing to a portion of the DSM memory, that portion is “locked” and inaccessible to other users. The locking mechanism also requires that the participant writing to the memory must wait for the other participants to respond to the lock.
What is needed is a simple and efficient system for enabling rate limiting and other techniques by sharing information about connections over diverse networks.